
package entities;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;

/**
 * Classe d'association : Une commande correspond à un client et à un produit.
 * @author Alex
 */
@Entity
public class Commande implements Serializable {

    @EmbeddedId
    private CommandePK pkey;

    private int quantity;

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    @Column(name="date_commande") //date est un nom réservé
    private Date date;

    //Déclaration des clés étrangères

    @JoinColumn(name = "client_id", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Client acheteur;

    @JoinColumn(name = "produit_reference", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Produit produit;

    public Commande() {
    }

    public Commande(CommandePK pkey, int quantity, Date date, Client acheteur, Produit produit) {
        this.pkey = pkey;
        this.quantity = quantity;
        this.date = date;
        this.acheteur = acheteur;
        this.produit = produit;
    }
    
    public Client getAcheteur() {
        return acheteur;
    }

    public Date getDate() {
        return date;
    }

    public CommandePK getPkey() {
        return pkey;
    }

    public Produit getProduit() {
        return produit;
    }

    public int getQuantity() {
        return quantity;
    }
    
}
